package yiran.agift.output;

import org.bukkit.ChatColor;
import org.bukkit.plugin.java.JavaPlugin;

public class Logger {
    private static JavaPlugin plugin;
    private Logger() {}
    /**
     * 初始化日志记录器
     *
     * @param pluginInstance 插件实例，用于获取日志记录器
     */
    public static void init(JavaPlugin pluginInstance) {
        plugin = pluginInstance;
    }

    /**
     * 记录信息级别的日志消息
     *
     * @param message 日志消息内容
     */
    public static void info(String message) {
        plugin.getLogger().info(formatMessage(message, "§a"));
    }

    /**
     * 记录警告级别的日志消息
     *
     * @param message 日志消息内容
     */
    public static void warn(String message) {
        plugin.getLogger().warning(formatMessage(message, "§6"));
    }

    /**
     * 记录错误级别的日志消息
     *
     * @param message 日志消息内容
     */
    public static void error(String message) {
        plugin.getLogger().severe(formatMessage(message, "§c"));
    }

    /**
     * 记录高亮显示的日志消息
     *
     * @param message 日志消息内容
     */
    public static void highlight(String message) {
        plugin.getLogger().info(formatMessage(message, "§e"));
    }

    /**
     * 格式化消息字符串，为其添加颜色和样式
     * 该方法主要用于在游戏中生成带有颜色和样式的聊天消息
     * 它使用了 Minecraft服务器中的ChatColor类来转换颜色代码
     *
     * @param message 消息的文本内容，将被格式化并着色
     * @param color 消息的颜色代码，用于指定消息的主要颜色
     * @return 返回格式化并着色后的消息字符串
     */
    private static String formatMessage(String message, String color) {
        return ChatColor.translateAlternateColorCodes('§',
                "§a§l[刀牌插件] " + color + "§l" + message);
    }

    /**
     * 打印插件的启动横幅
     * 该方法用于在控制台输出插件的相关信息，如功能、作者和版本号
     * 横幅使用Minecraft颜色代码格式化，以在游戏环境中显示颜色和样式
     */
    public static void printBanner() {
        // 定义插件信息横幅，包含插件名称、功能、作者和版本号
        String[] banner = {
                "§b§l======== §e§l刀牌插件 §b§l========",
                "§b§l功能: §e礼包",
                "§b§l作者: §eYiran",
                "§b§l版本: §e1.0.0",
                "§b§l========================="
        };
        // 遍历横幅数组，逐行输出插件信息
        for (String line : banner) {
            plugin.getLogger().info(line);
        }
    }
}


